import axios from 'axios'

// ✅ 动态 API 地址（优先用环境变量）
const baseURL = process.env.VUE_APP_API

const service = axios.create({
    baseURL,
    timeout: 5000,
    withCredentials: true, // 跨域时带 cookie
    headers: {
        'Content-Type': 'application/json'
    }
})

// 请求拦截器
service.interceptors.request.use(
    config => {
        const token = localStorage.getItem('token')
        if (token) {
            // ✅ 确保带上 Bearer 前缀
            config.headers['Authorization'] = `Bearer ${token}`
        }
        return config
    },
    error => {
        console.error('[Axios 请求错误] =>', error)
        return Promise.reject(error)
    }
)

// 响应拦截器
service.interceptors.response.use(
    response => {
        // 这里既能处理 200，也能兜底返回数据
        if (response.status === 200) {
            return response.data
        }
        console.warn('[Axios 非 200 响应]', response)
        return Promise.reject(response)
    },
    error => {
        if (error.response) {
            // 服务器有返回错误
            console.error(`[Axios 响应错误] ${error.response.status}:`, error.response.data)
        } else if (error.request) {
            // 请求已发出但没有响应
            console.error('[Axios 无响应] =>', error.request)
        } else {
            // 其它错误
            console.error('[Axios 配置错误] =>', error.message)
        }
        return Promise.reject(error)
    }
)

export default service
